FTN =		mpxlf
FTNFLAGS =	-O2
FTNFLAGS =	-g

IEXE =	init
ISRC =	$(IEXE).f
NEXE =	naive
NSRC =	$(NEXE).f
REXE =	reordered
RSRC =	$(REXE).f
CEXE =	chaotic
CSRC =	$(CEXE).f
SEXE =	skewed
SSRC =	$(SEXE).f
PEXE =	pipelined
PSRC =	$(PEXE).f

.f.o:
		$(FTN) -c $(FTNFLAGS) $(<)

all:		$(IEXE) $(NEXE) $(REXE) $(CEXE) $(SEXE) $(PEXE)

$(IEXE):	$(ISRC:.f=.o)
		/bin/rm -f $(IEXE)
		$(FTN) -o $(IEXE) $(ISRC:.f=.o)

$(NEXE):	$(NSRC:.f=.o)
		/bin/rm -f $(NEXE)
		$(FTN) -o $(NEXE) $(NSRC:.f=.o)

$(REXE):	$(RSRC:.f=.o)
		/bin/rm -f $(REXE)
		$(FTN) -o $(REXE) $(RSRC:.f=.o)

$(CEXE):	$(CSRC:.f=.o)
		/bin/rm -f $(CEXE)
		$(FTN) -o $(CEXE) $(CSRC:.f=.o)

$(SEXE):	$(SSRC:.f=.o)
		/bin/rm -f $(SEXE)
		$(FTN) -o $(SEXE) $(SSRC:.f=.o)

$(PEXE):	$(PSRC:.f=.o)
		/bin/rm -f $(PEXE)
		$(FTN) -o $(PEXE) $(PSRC:.f=.o)

$(CSRC:.f=.o):	stencil.h
$(SSRC:.f=.o):	stencil.h
$(PSRC:.f=.o):	stencil.h

clean:
		/bin/rm -f $(IEXE) $(ISRC:.f=.o)
		/bin/rm -f $(NEXE) $(NSRC:.f=.o)
		/bin/rm -f $(REXE) $(RSRC:.f=.o)
		/bin/rm -f $(CEXE) $(CSRC:.f=.o)
		/bin/rm -f $(SEXE) $(SSRC:.f=.o)
		/bin/rm -f $(PEXE) $(PSRC:.f=.o)
